home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / lib / emacs / 19.22 / lisp / vt100-led.el < prev    next >
Lisp/Scheme  |  1993-03-24  |  2KB  |  68 lines

  1. ;;; vt100-led.el --- functions for LED control on VT-100 terminals & clones.
  2.  
  3. ;; Copyright (C) 1988 Free Software Foundation, Inc.
  4.  
  5. ;; Author: Howard Gayle
  6. ;; Maintainer: FSF
  7. ;; Keywords: hardware
  8.  
  9. ;; This file is part of GNU Emacs.
  10.  
  11. ;; GNU Emacs is free software; you can redistribute it and/or modify
  12. ;; it under the terms of the GNU General Public License as published by
  13. ;; the Free Software Foundation; either version 2, or (at your option)
  14. ;; any later version.
  15.  
  16. ;; GNU Emacs is distributed in the hope that it will be useful,
  17. ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
  18. ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19. ;; GNU General Public License for more details.
  20.  
  21. ;; You should have received a copy of the GNU General Public License
  22. ;; along with GNU Emacs; see the file COPYING.  If not, write to
  23. ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  24.  
  25. ;;; Code:
  26.  
  27. (defvar led-state (make-vector 5 nil)
  28.    "The internal state of the LEDs.  Choices are nil, t, `flash.
  29. Element 0 is not used.")
  30.  
  31. (defun led-flash (l)
  32.   "Flash LED l."
  33.   (aset led-state l 'flash)
  34.   (led-update))
  35.  
  36. (defun led-off (&optional l)
  37.   "Turn off vt100 led number L.  With no argument, turn them all off."
  38.   (interactive "P")
  39.   (if l
  40.       (aset led-state (prefix-numeric-value l) nil)
  41.     (fillarray led-state nil))
  42.   (led-update))
  43.  
  44. (defun led-on (l)
  45.   "Turn on LED l."
  46.   (aset led-state l t)
  47.   (led-update))
  48.  
  49. (defun led-update ()
  50.   "Update the terminal's LEDs to reflect the internal state."
  51.   (let ((f "\e[?0")            ; String to flash.
  52.     (o "\e[0")            ; String for steady on.
  53.     (l 1))                ; Current LED number.
  54.     (while (/= l 5)
  55.       (let ((s (aref led-state l)))
  56.     (cond
  57.      ((eq s 'flash)
  58.       (setq f (concat f ";" (int-to-string l))))
  59.      (s
  60.       (setq o (concat o ";" (int-to-string l))))))
  61.       (setq l (1+ l)))
  62.     (setq o (concat o "q" f "t"))
  63.     (send-string-to-terminal o)))
  64.  
  65. (provide 'vt100-led)
  66.  
  67. ;;; vt100-led.el ends here
  68.